home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1996 July / Macworld (1996-07).dmg / For your System Folder / Sound Manager 3.2a2 / Sound.a < prev    next >
Text File  |  1995-11-24  |  30KB  |  1,062 lines

  1. ;
  2. ;    File:        Sound.a
  3. ;
  4. ;    Contains:    Sound Manager Interfaces.
  5. ;
  6. ;    Version:    ETO
  7. ;
  8. ;    DRI:        Jim Reekes
  9. ;
  10. ;    Copyright:    © 1984-1995 by Apple Computer, Inc.
  11. ;                All rights reserved.
  12. ;
  13. ;    Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  14. ;                stack.  Include the file and version information (from above)
  15. ;                in the problem description and send to:
  16. ;                    Internet:    apple.bugs@applelink.apple.com
  17. ;                    AppleLink:    APPLE.BUGS
  18. ;
  19. ;
  20.  
  21.     IF &TYPE('__SOUND__') = 'UNDEFINED' THEN
  22. __SOUND__ SET 1
  23.  
  24.  
  25.     IF &TYPE('__TYPES__') = 'UNDEFINED' THEN
  26.     include 'Types.a'
  27.     ENDIF
  28. ;        include 'ConditionalMacros.a'                                ;
  29.  
  30.     IF &TYPE('__COMPONENTS__') = 'UNDEFINED' THEN
  31.     include 'Components.a'
  32.     ENDIF
  33. ;        include 'MixedMode.a'                                        ;
  34.  
  35.     IF &TYPE('__MIXEDMODE__') = 'UNDEFINED' THEN
  36.     include 'MixedMode.a'
  37.     ENDIF
  38. ;
  39. ;                        * * *  N O T E  * * *
  40. ;
  41. ;    This file has been updated to include Sound Manager 3.2 interfaces.
  42. ;
  43. ;    Some of the Sound Manager 3.0 interfaces were not put into the InterfaceLib
  44. ;    that originally shipped with the PowerMacs. These missing functions and the
  45. ;    new 3.2 interfaces have been released in the SoundLib library for PowerPC
  46. ;    developers to link with. The runtime library for these functions are
  47. ;    installed by Sound Manager 3.2. The following functions are found in SoundLib.
  48. ;
  49. ;        GetCompressionInfo(), GetSoundPreference(), SetSoundPreference(),
  50. ;        UnsignedFixedMulDiv(), SndGetInfo(), SndSetInfo(), GetSoundOutputInfo(),
  51. ;        SetSoundOutputInfo(), GetCompressionName(), SoundConverterOpen(),
  52. ;        SoundConverterClose(), SoundConverterGetBufferSizes(), SoundConverterBeginConversion(),
  53. ;        SoundConverterConvertBuffer(), SoundConverterEndConversion()
  54. ;
  55. ;
  56. ;    Interfaces for Sound Driver, !!! OBSOLETE and NOT SUPPORTED !!!
  57. ;
  58. ;    These items are no longer defined, but appear here so that someone
  59. ;    searching the interfaces might find them. If you are using one of these
  60. ;    items, you must change your code to support the Sound Manager.
  61. ;
  62. ;        swMode, ftMode, ffMode
  63. ;        FreeWave, FFSynthRec, Tone, SWSynthRec, Wave, FTSoundRec
  64. ;        SndCompletionProcPtr
  65. ;        StartSound, StopSound, SoundDone
  66. ;
  67.  
  68. soundListRsrc                    EQU        'snd '                ;Resource type used by Sound Manager
  69. rate44khz                        EQU        $AC440000            ;44100.00000 in fixed-point
  70. rate22050hz                        EQU        $56220000            ;22050.00000 in fixed-point
  71. rate22khz                        EQU        $56EE8BA3            ;22254.54545 in fixed-point
  72. rate11khz                        EQU        $2B7745D1            ;11127.27273 in fixed-point
  73. rate11025hz                        EQU        $2B110000            ;11025.00000 in fixed-point
  74. ;synthesizer numbers for SndNewChannel
  75. squareWaveSynth                    EQU        1                    ;square wave synthesizer
  76. waveTableSynth                    EQU        3                    ;wave table synthesizer
  77. sampledSynth                    EQU        5                    ;sampled sound synthesizer
  78. ;old Sound Manager MACE synthesizer numbers
  79. MACE3snthID                        EQU        11
  80. MACE6snthID                        EQU        13
  81. kMiddleC                        EQU        60                    ;MIDI note value for middle C
  82. kSimpleBeepID                    EQU        1                    ;reserved resource ID for Simple Beep
  83. kFullVolume                        EQU        $0100                ;1.0, setting for full hardware output volume
  84. kNoVolume                        EQU        0                    ;setting for no sound volume
  85. ;command numbers for SndDoCommand and SndDoImmediate
  86. nullCmd                            EQU        0
  87. initCmd                            EQU        1
  88. freeCmd                            EQU        2
  89. quietCmd                        EQU        3
  90. flushCmd                        EQU        4
  91. reInitCmd                        EQU        5
  92. waitCmd                            EQU        10
  93. pauseCmd                        EQU        11
  94. resumeCmd                        EQU        12
  95. callBackCmd                        EQU        13
  96.  
  97. syncCmd                            EQU        14
  98. availableCmd                    EQU        24
  99. versionCmd                        EQU        25
  100. totalLoadCmd                    EQU        26
  101. loadCmd                            EQU        27
  102. freqDurationCmd                    EQU        40
  103. restCmd                            EQU        41
  104. freqCmd                            EQU        42
  105. ampCmd                            EQU        43
  106. timbreCmd                        EQU        44
  107. getAmpCmd                        EQU        45
  108. volumeCmd                        EQU        46                    ;sound manager 3.0 or later only
  109. getVolumeCmd                    EQU        47                    ;sound manager 3.0 or later only
  110. waveTableCmd                    EQU        60
  111. phaseCmd                        EQU        61
  112.  
  113. soundCmd                        EQU        80
  114. bufferCmd                        EQU        81
  115. rateCmd                            EQU        82
  116. continueCmd                        EQU        83
  117. doubleBufferCmd                    EQU        84
  118. getRateCmd                        EQU        85
  119. rateMultiplierCmd                EQU        86
  120. getRateMultiplierCmd            EQU        87
  121. sizeCmd                            EQU        90                    ;obsolete command
  122. convertCmd                        EQU        91                    ;obsolete MACE command
  123. stdQLength                        EQU        128
  124. dataOffsetFlag                    EQU        $8000
  125.  
  126. ;channel initialization parameters
  127.     IF OLDROUTINENAMES  THEN
  128. waveInitChannelMask                EQU        $07
  129. waveInitChannel0                EQU        $04                    ;wave table only, Sound Manager 2.0 and earlier
  130. waveInitChannel1                EQU        $05                    ;wave table only, Sound Manager 2.0 and earlier
  131. waveInitChannel2                EQU        $06                    ;wave table only, Sound Manager 2.0 and earlier
  132. waveInitChannel3                EQU        $07                    ;wave table only, Sound Manager 2.0 and earlier
  133. initChan0                        EQU        waveInitChannel0    ;obsolete spelling
  134. initChan1                        EQU        waveInitChannel1    ;obsolete spelling
  135. initChan2                        EQU        waveInitChannel2    ;obsolete spelling
  136. initChan3                        EQU        waveInitChannel3    ;obsolete spelling
  137.  
  138.     ENDIF
  139. initChanLeft                    EQU        $0002                ;left stereo channel
  140. initChanRight                    EQU        $0003                ;right stereo channel
  141. initNoInterp                    EQU        $0004                ;no linear interpolation
  142. initNoDrop                        EQU        $0008                ;no drop-sample conversion
  143. initMono                        EQU        $0080                ;monophonic channel
  144. initStereo                        EQU        $00C0                ;stereo channel
  145. initMACE3                        EQU        $0300                ;MACE 3:1
  146. initMACE6                        EQU        $0400                ;MACE 6:1
  147. initPanMask                        EQU        $0003                ;mask for right/left pan values
  148. initSRateMask                    EQU        $0030                ;mask for sample rate values
  149. initStereoMask                    EQU        $00C0                ;mask for mono/stereo values
  150. initCompMask                    EQU        $FF00                ;mask for compression IDs
  151. kUseOptionalOutputDevice        EQU        -1                    ;only for Sound Manager 3.0 or later
  152. notCompressed                    EQU        0                    ;compression ID's
  153. fixedCompression                EQU        -1                    ;compression ID for fixed-sized compression
  154. variableCompression                EQU        -2                    ;compression ID for variable-sized compression
  155. twoToOne                        EQU        1
  156. eightToThree                    EQU        2
  157. threeToOne                        EQU        3
  158. sixToOne                        EQU        4
  159.  
  160.     IF ¬ GENERATINGPOWERPC  THEN
  161. stdSH                            EQU        $00                    ;Standard sound header encode value
  162. extSH                            EQU        $FF                    ;Extended sound header encode value
  163. cmpSH                            EQU        $FE                    ;Compressed sound header encode value
  164.  
  165.     ENDIF
  166. outsideCmpSH                    EQU        0                    ;obsolete MACE constant
  167. insideCmpSH                        EQU        1                    ;obsolete MACE constant
  168. aceSuccess                        EQU        0                    ;obsolete MACE constant
  169. aceMemFull                        EQU        1                    ;obsolete MACE constant
  170. aceNilBlock                        EQU        2                    ;obsolete MACE constant
  171. aceBadComp                        EQU        3                    ;obsolete MACE constant
  172. aceBadEncode                    EQU        4                    ;obsolete MACE constant
  173. aceBadDest                        EQU        5                    ;obsolete MACE constant
  174. aceBadCmd                        EQU        6                    ;obsolete MACE constant
  175. sixToOnePacketSize                EQU        8
  176. threeToOnePacketSize            EQU        16
  177. stateBlockSize                    EQU        64
  178. leftOverBlockSize                EQU        32
  179. firstSoundFormat                EQU        $0001                ;general sound format
  180. secondSoundFormat                EQU        $0002                ;special sampled sound format (HyperCard)
  181. dbBufferReady                    EQU        $00000001            ;double buffer is filled
  182. dbLastBuffer                    EQU        $00000004            ;last double buffer to play
  183. sysBeepDisable                    EQU        $0000                ;SysBeep() enable flags
  184. sysBeepEnable                    EQU        (1 << 0)
  185. sysBeepSynchronous                EQU        (1 << 1)            ;if bit set, make alert sounds synchronous
  186. unitTypeNoSelection                EQU        $FFFF                ;unitTypes for AudioSelection.unitType
  187. unitTypeSeconds                    EQU        $0000
  188.  
  189. ; unsigned fixed-point number 
  190. ; typedef unsigned long     UnsignedFixed
  191. SndCommand                 RECORD    0
  192. cmd                         ds.w   1        ; offset: $0 (0)
  193. param1                     ds.w   1        ; offset: $2 (2)
  194. param2                     ds.l   1        ; offset: $4 (4)
  195. sizeof                     EQU *            ; size:   $8 (8)
  196.                         ENDR
  197.  
  198. ; typedef struct SndCommand  SndCommand
  199. ; typedef struct SndChannel  SndChannel
  200. ; typedef SndChannel         *SndChannelPtr
  201. SndChannel                 RECORD    0
  202. nextChan                 ds.l   1        ; offset: $0 (0)
  203. firstMod                 ds.l   1        ; offset: $4 (4)        ; reserved for the Sound Manager 
  204. callBack                 ds.l   1        ; offset: $8 (8)
  205. userInfo                 ds.l   1        ; offset: $C (12)
  206. wait                     ds.l   1        ; offset: $10 (16)        ; The following is for internal Sound Manager use only.
  207. cmdInProgress             ds     SndCommand ; offset: $14 (20)
  208. flags                     ds.w   1        ; offset: $1C (28)
  209. qLength                     ds.w   1        ; offset: $1E (30)
  210. qHead                     ds.w   1        ; offset: $20 (32)
  211. qTail                     ds.w   1        ; offset: $22 (34)
  212. queue                     ds.b   128 * SndCommand.sizeof ; offset: $24 (36)
  213. sizeof                     EQU *            ; size:   $424 (1060)
  214.                         ENDR
  215.  
  216. ;MACE structures
  217. StateBlock                 RECORD    0
  218. stateVar                 ds.w   64        ; offset: $0 (0)
  219. sizeof                     EQU *            ; size:   $80 (128)
  220.                         ENDR
  221.  
  222. ; typedef struct StateBlock  StateBlock
  223. ; typedef StateBlock         *StateBlockPtr
  224. LeftOverBlock             RECORD    0
  225. count                     ds.l   1        ; offset: $0 (0)
  226. sampleArea                 ds.b   32        ; offset: $4 (4)
  227. sizeof                     EQU *            ; size:   $24 (36)
  228.                         ENDR
  229.  
  230. ; typedef struct LeftOverBlock  LeftOverBlock
  231. ; typedef LeftOverBlock     *LeftOverBlockPtr
  232. ModRef                     RECORD    0
  233. modNumber                 ds.w   1        ; offset: $0 (0)
  234. modInit                     ds.l   1        ; offset: $2 (2)
  235. sizeof                     EQU *            ; size:   $6 (6)
  236.                         ENDR
  237.  
  238. ; typedef struct ModRef     ModRef
  239. SndListResource         RECORD    0
  240. format                     ds.w   1        ; offset: $0 (0)
  241. numModifiers             ds.w   1        ; offset: $2 (2)
  242. modifierPart             ds     ModRef    ; offset: $4 (4)        ;This is a variable length array
  243. numCommands                 ds.w   1        ; offset: $A (10)
  244. commandPart                 ds     SndCommand ; offset: $C (12)    ;This is a variable length array
  245. dataPart                 ds.b   1        ; offset: $14 (20)        ;This is a variable length array
  246.                          ORG 22
  247. sizeof                     EQU *            ; size:   $16 (22)
  248.                         ENDR
  249.  
  250. ; typedef struct SndListResource  SndListResource
  251. ; typedef SndListResource     *SndListPtr
  252. ; typedef SndListPtr         *SndListHndl, *SndListHandle
  253. ;HyperCard sound resource format
  254. Snd2ListResource         RECORD    0
  255. format                     ds.w   1        ; offset: $0 (0)
  256. refCount                 ds.w   1        ; offset: $2 (2)
  257. numCommands                 ds.w   1        ; offset: $4 (4)
  258. commandPart                 ds     SndCommand ; offset: $6 (6)        ;This is a variable length array
  259. dataPart                 ds.b   1        ; offset: $E (14)        ;This is a variable length array
  260.                          ORG 16
  261. sizeof                     EQU *            ; size:   $10 (16)
  262.                         ENDR
  263.  
  264. ; typedef struct Snd2ListResource  Snd2ListResource
  265. ; typedef Snd2ListResource     *Snd2ListPtr
  266. ; typedef Snd2ListPtr         *Snd2ListHndl, *Snd2ListHandle
  267. SoundHeader             RECORD    0
  268. samplePtr                 ds.l   1        ; offset: $0 (0)        ;if NIL then samples are in sampleArea
  269. length                     ds.l   1        ; offset: $4 (4)        ;length of sound in bytes
  270. sampleRate                 ds.l   1        ; offset: $8 (8)        ;sample rate for this sound
  271. loopStart                 ds.l   1        ; offset: $C (12)        ;start of looping portion
  272. loopEnd                     ds.l   1        ; offset: $10 (16)        ;end of looping portion
  273. encode                     ds.b   1        ; offset: $14 (20)        ;header encoding
  274. baseFrequency             ds.b   1        ; offset: $15 (21)        ;baseFrequency value
  275. sampleArea                 ds.b   1        ; offset: $16 (22)        ;space for when samples follow directly
  276.                          ORG 24
  277. sizeof                     EQU *            ; size:   $18 (24)
  278.                         ENDR
  279.  
  280. ; typedef struct SoundHeader  SoundHeader
  281. ; typedef SoundHeader         *SoundHeaderPtr
  282. CmpSoundHeader             RECORD    0
  283. samplePtr                 ds.l   1        ; offset: $0 (0)        ;if nil then samples are in sample area
  284. numChannels                 ds.l   1        ; offset: $4 (4)        ;number of channels i.e. mono = 1
  285. sampleRate                 ds.l   1        ; offset: $8 (8)        ;sample rate in Apples Fixed point representation
  286. loopStart                 ds.l   1        ; offset: $C (12)        ;loopStart of sound before compression
  287. loopEnd                     ds.l   1        ; offset: $10 (16)        ;loopEnd of sound before compression
  288. encode                     ds.b   1        ; offset: $14 (20)        ;data structure used , stdSH, extSH, or cmpSH
  289. baseFrequency             ds.b   1        ; offset: $15 (21)        ;same meaning as regular SoundHeader
  290. numFrames                 ds.l   1        ; offset: $16 (22)        ;length in frames ( packetFrames or sampleFrames )
  291. AIFFSampleRate             ds.w   5        ; offset: $1A (26)        ;IEEE sample rate
  292. markerChunk                 ds.l   1        ; offset: $24 (36)        ;sync track
  293. format                     ds.l   1        ; offset: $28 (40)        ;data format type, was futureUse1
  294. futureUse2                 ds.l   1        ; offset: $2C (44)        ;reserved by Apple
  295. stateVars                 ds.l   1        ; offset: $30 (48)        ;pointer to State Block
  296. leftOverSamples             ds.l   1        ; offset: $34 (52)        ;used to save truncated samples between compression calls
  297. compressionID             ds.w   1        ; offset: $38 (56)        ;0 means no compression, non zero means compressionID
  298. packetSize                 ds.w   1        ; offset: $3A (58)        ;number of bits in compressed sample packet
  299. snthID                     ds.w   1        ; offset: $3C (60)        ;resource ID of Sound Manager snth that contains NRT C/E
  300. sampleSize                 ds.w   1        ; offset: $3E (62)        ;number of bits in non-compressed sample
  301. sampleArea                 ds.b   1        ; offset: $40 (64)        ;space for when samples follow directly
  302.                          ORG 66
  303. sizeof                     EQU *            ; size:   $42 (66)
  304.                         ENDR
  305.  
  306. ; typedef struct CmpSoundHeader  CmpSoundHeader
  307. ; typedef CmpSoundHeader     *CmpSoundHeaderPtr
  308. ExtSoundHeader             RECORD    0
  309. samplePtr                 ds.l   1        ; offset: $0 (0)        ;if nil then samples are in sample area
  310. numChannels                 ds.l   1        ; offset: $4 (4)        ;number of channels,  ie mono = 1
  311. sampleRate                 ds.l   1        ; offset: $8 (8)        ;sample rate in Apples Fixed point representation
  312. loopStart                 ds.l   1        ; offset: $C (12)        ;same meaning as regular SoundHeader
  313. loopEnd                     ds.l   1        ; offset: $10 (16)        ;same meaning as regular SoundHeader
  314. encode                     ds.b   1        ; offset: $14 (20)        ;data structure used , stdSH, extSH, or cmpSH
  315. baseFrequency             ds.b   1        ; offset: $15 (21)        ;same meaning as regular SoundHeader
  316. numFrames                 ds.l   1        ; offset: $16 (22)        ;length in total number of frames
  317. AIFFSampleRate             ds.w   5        ; offset: $1A (26)        ;IEEE sample rate
  318. markerChunk                 ds.l   1        ; offset: $24 (36)        ;sync track
  319. instrumentChunks         ds.l   1        ; offset: $28 (40)        ;AIFF instrument chunks
  320. AESRecording             ds.l   1        ; offset: $2C (44)
  321. sampleSize                 ds.w   1        ; offset: $30 (48)        ;number of bits in sample
  322. futureUse1                 ds.w   1        ; offset: $32 (50)        ;reserved by Apple
  323. futureUse2                 ds.l   1        ; offset: $34 (52)        ;reserved by Apple
  324. futureUse3                 ds.l   1        ; offset: $38 (56)        ;reserved by Apple
  325. futureUse4                 ds.l   1        ; offset: $3C (60)        ;reserved by Apple
  326. sampleArea                 ds.b   1        ; offset: $40 (64)        ;space for when samples follow directly
  327.                          ORG 66
  328. sizeof                     EQU *            ; size:   $42 (66)
  329.                         ENDR
  330.  
  331. ; typedef struct ExtSoundHeader  ExtSoundHeader
  332. ; typedef ExtSoundHeader     *ExtSoundHeaderPtr
  333. ConversionBlock         RECORD    0
  334. destination                 ds.w   1        ; offset: $0 (0)
  335. unused                     ds.w   1        ; offset: $2 (2)
  336. inputPtr                 ds.l   1        ; offset: $4 (4)
  337. outputPtr                 ds.l   1        ; offset: $8 (8)
  338. sizeof                     EQU *            ; size:   $C (12)
  339.                         ENDR
  340.  
  341. ; typedef struct ConversionBlock  ConversionBlock
  342. ; typedef ConversionBlock     *ConversionBlockPtr
  343. SMStatus                 RECORD    0
  344. smMaxCPULoad             ds.w   1        ; offset: $0 (0)
  345. smNumChannels             ds.w   1        ; offset: $2 (2)
  346. smCurCPULoad             ds.w   1        ; offset: $4 (4)
  347. sizeof                     EQU *            ; size:   $6 (6)
  348.                         ENDR
  349.  
  350. ; typedef struct SMStatus     SMStatus
  351. ; typedef SMStatus             *SMStatusPtr
  352. SCStatus                 RECORD    0
  353. scStartTime                 ds.l   1        ; offset: $0 (0)
  354. scEndTime                 ds.l   1        ; offset: $4 (4)
  355. scCurrentTime             ds.l   1        ; offset: $8 (8)
  356. scChannelBusy             ds.b   1        ; offset: $C (12)
  357. scChannelDisposed         ds.b   1        ; offset: $D (13)
  358. scChannelPaused             ds.b   1        ; offset: $E (14)
  359. scUnused                 ds.b   1        ; offset: $F (15)
  360. scChannelAttributes         ds.l   1        ; offset: $10 (16)
  361. scCPULoad                 ds.l   1        ; offset: $14 (20)
  362. sizeof                     EQU *            ; size:   $18 (24)
  363.                         ENDR
  364.  
  365. ; typedef struct SCStatus     SCStatus
  366. ; typedef SCStatus             *SCStatusPtr
  367. AudioSelection             RECORD    0
  368. unitType                 ds.l   1        ; offset: $0 (0)
  369. selStart                 ds.l   1        ; offset: $4 (4)
  370. selEnd                     ds.l   1        ; offset: $8 (8)
  371. sizeof                     EQU *            ; size:   $C (12)
  372.                         ENDR
  373.  
  374. ; typedef struct AudioSelection  AudioSelection
  375. ; typedef AudioSelection     *AudioSelectionPtr
  376. SndDoubleBuffer         RECORD    0
  377. dbNumFrames                 ds.l   1        ; offset: $0 (0)
  378. dbFlags                     ds.l   1        ; offset: $4 (4)
  379. dbUserInfo                 ds.l   2        ; offset: $8 (8)
  380. dbSoundData                 ds.b   1        ; offset: $10 (16)
  381.                          ORG 18
  382. sizeof                     EQU *            ; size:   $12 (18)
  383.                         ENDR
  384.  
  385. ; typedef struct SndDoubleBuffer  SndDoubleBuffer
  386. ; typedef SndDoubleBuffer     *SndDoubleBufferPtr
  387. SndDoubleBufferHeader     RECORD    0
  388. dbhNumChannels             ds.w   1        ; offset: $0 (0)
  389. dbhSampleSize             ds.w   1        ; offset: $2 (2)
  390. dbhCompressionID         ds.w   1        ; offset: $4 (4)
  391. dbhPacketSize             ds.w   1        ; offset: $6 (6)
  392. dbhSampleRate             ds.l   1        ; offset: $8 (8)
  393. dbhBufferPtr             ds.l   2        ; offset: $C (12)
  394. dbhDoubleBack             ds.l   1        ; offset: $14 (20)
  395. sizeof                     EQU *            ; size:   $18 (24)
  396.                         ENDR
  397.  
  398. ; typedef struct SndDoubleBufferHeader  SndDoubleBufferHeader
  399. ; typedef SndDoubleBufferHeader  *SndDoubleBufferHeaderPtr
  400. SndDoubleBufferHeader2     RECORD    0
  401. dbhNumChannels             ds.w   1        ; offset: $0 (0)
  402. dbhSampleSize             ds.w   1        ; offset: $2 (2)
  403. dbhCompressionID         ds.w   1        ; offset: $4 (4)
  404. dbhPacketSize             ds.w   1        ; offset: $6 (6)
  405. dbhSampleRate             ds.l   1        ; offset: $8 (8)
  406. dbhBufferPtr             ds.l   2        ; offset: $C (12)
  407. dbhDoubleBack             ds.l   1        ; offset: $14 (20)
  408. dbhFormat                 ds.l   1        ; offset: $18 (24)
  409. sizeof                     EQU *            ; size:   $1C (28)
  410.                         ENDR
  411.  
  412. ; typedef struct SndDoubleBufferHeader2  SndDoubleBufferHeader2
  413. ; typedef SndDoubleBufferHeader2  *SndDoubleBufferHeader2Ptr
  414. SoundInfoList             RECORD    0
  415. count                     ds.w   1        ; offset: $0 (0)
  416. infoHandle                 ds.l   1        ; offset: $2 (2)
  417. sizeof                     EQU *            ; size:   $6 (6)
  418.                         ENDR
  419.  
  420. ; typedef struct SoundInfoList  SoundInfoList
  421. ; typedef SoundInfoList     *SoundInfoListPtr
  422. SoundComponentData         RECORD    0
  423. flags                     ds.l   1        ; offset: $0 (0)
  424. format                     ds.l   1        ; offset: $4 (4)
  425. numChannels                 ds.w   1        ; offset: $8 (8)
  426. sampleSize                 ds.w   1        ; offset: $A (10)
  427. sampleRate                 ds.l   1        ; offset: $C (12)
  428. sampleCount                 ds.l   1        ; offset: $10 (16)
  429. buffer                     ds.l   1        ; offset: $14 (20)
  430. reserved                 ds.l   1        ; offset: $18 (24)
  431. sizeof                     EQU *            ; size:   $1C (28)
  432.                         ENDR
  433.  
  434. ; typedef struct SoundComponentData  SoundComponentData
  435. ; typedef SoundComponentData  *SoundComponentDataPtr
  436. CompressionInfo         RECORD    0
  437. recordSize                 ds.l   1        ; offset: $0 (0)
  438. format                     ds.l   1        ; offset: $4 (4)
  439. compressionID             ds.w   1        ; offset: $8 (8)
  440. samplesPerPacket         ds.w   1        ; offset: $A (10)
  441. bytesPerPacket             ds.w   1        ; offset: $C (12)
  442. bytesPerFrame             ds.w   1        ; offset: $E (14)
  443. bytesPerSample             ds.w   1        ; offset: $10 (16)
  444. futureUse1                 ds.w   1        ; offset: $12 (18)
  445. sizeof                     EQU *            ; size:   $14 (20)
  446.                         ENDR
  447.  
  448. ; typedef struct CompressionInfo  CompressionInfo
  449. ; typedef CompressionInfo     *CompressionInfoPtr
  450. ; typedef CompressionInfoPtr  *CompressionInfoHandle
  451. ; typedef void                 *SoundConverter
  452.  
  453. ; These two routines for Get/SetSoundVol should no longer be used.
  454. ; They were for old Apple Sound Chip machines, and do not support the DSP or PowerMacs.
  455. ; Use Get/SetDefaultOutputVolume instead, if you must change the user's machine.
  456.     IF OLDROUTINENAMES  ** ¬ GENERATINGCFM  THEN
  457. ;
  458. ; pascal void SetSoundVol(short level)
  459. ;
  460.     IF GENERATINGCFM THEN
  461.         IMPORT_CFM_FUNCTION    SetSoundVol
  462.     ENDIF
  463.  
  464. ;
  465. ; pascal void GetSoundVol(short *level)
  466. ;
  467.     IF ¬ GENERATINGCFM THEN
  468.         ; parameters: 
  469.         ;     level             => A0
  470.         Macro
  471.         _GetSoundVol
  472.             dc.w     $4218
  473.             dc.w     $10B8
  474.             dc.w     $0260
  475.         EndM
  476.     ELSE
  477.         IMPORT_CFM_FUNCTION    GetSoundVol
  478.     ENDIF
  479.  
  480.     ENDIF
  481. ;
  482. ; pascal OSErr SndDoCommand(SndChannelPtr chan, const SndCommand *cmd, Boolean noWait)
  483. ;
  484.     IF ¬ GENERATINGCFM THEN
  485.         _SndDoCommand:    OPWORD    $A803
  486.     ELSE
  487.         IMPORT_CFM_FUNCTION    SndDoCommand
  488.     ENDIF
  489.  
  490. ;
  491. ; pascal OSErr SndDoImmediate(SndChannelPtr chan, const SndCommand *cmd)
  492. ;
  493.     IF ¬ GENERATINGCFM THEN
  494.         _SndDoImmediate:    OPWORD    $A804
  495.     ELSE
  496.         IMPORT_CFM_FUNCTION    SndDoImmediate
  497.     ENDIF
  498.  
  499. ;
  500. ; pascal OSErr SndNewChannel(SndChannelPtr *chan, short synth, long init, SndCallBackUPP userRoutine)
  501. ;
  502.     IF ¬ GENERATINGCFM THEN
  503.         _SndNewChannel:    OPWORD    $A807
  504.     ELSE
  505.         IMPORT_CFM_FUNCTION    SndNewChannel
  506.     ENDIF
  507.  
  508. ;
  509. ; pascal OSErr SndDisposeChannel(SndChannelPtr chan, Boolean quietNow)
  510. ;
  511.     IF ¬ GENERATINGCFM THEN
  512.         _SndDisposeChannel:    OPWORD    $A801
  513.     ELSE
  514.         IMPORT_CFM_FUNCTION    SndDisposeChannel
  515.     ENDIF
  516.  
  517. ;
  518. ; pascal OSErr SndPlay(SndChannelPtr chan, SndListHandle sndHandle, Boolean async)
  519. ;
  520.     IF ¬ GENERATINGCFM THEN
  521.         _SndPlay:    OPWORD    $A805
  522.     ELSE
  523.         IMPORT_CFM_FUNCTION    SndPlay
  524.     ENDIF
  525.  
  526.     IF OLDROUTINENAMES  THEN
  527. ;
  528. ; pascal OSErr SndAddModifier(SndChannelPtr chan, Ptr modifier, short id, long init)
  529. ;
  530.     IF ¬ GENERATINGCFM THEN
  531.         _SndAddModifier:    OPWORD    $A802
  532.     ELSE
  533.         IMPORT_CFM_FUNCTION    SndAddModifier
  534.     ENDIF
  535.  
  536.     ENDIF
  537. ;
  538. ; pascal OSErr SndControl(short id, SndCommand *cmd)
  539. ;
  540.     IF ¬ GENERATINGCFM THEN
  541.         _SndControl:    OPWORD    $A806
  542.     ELSE
  543.         IMPORT_CFM_FUNCTION    SndControl
  544.     ENDIF
  545.  
  546. ; Sound Manager 2.0 and later, uses _SoundDispatch 
  547. ;
  548. ; pascal NumVersion SndSoundManagerVersion(void)
  549. ;
  550.     IF ¬ GENERATINGCFM THEN
  551.         Macro
  552.         _SndSoundManagerVersion
  553.             dc.w     $203C
  554.             dc.w     $000C
  555.             dc.w     $0008
  556.             dc.w     $A800
  557.         EndM
  558.     ELSE
  559.         IMPORT_CFM_FUNCTION    SndSoundManagerVersion
  560.     ENDIF
  561.  
  562. ;
  563. ; pascal OSErr SndStartFilePlay(SndChannelPtr chan, short fRefNum, short resNum, long bufferSize, void *theBuffer, AudioSelectionPtr theSelection, FilePlayCompletionUPP theCompletion, Boolean async)
  564. ;
  565.     IF ¬ GENERATINGCFM THEN
  566.         Macro
  567.         _SndStartFilePlay
  568.             dc.w     $203C
  569.             dc.w     $0D00
  570.             dc.w     $0008
  571.             dc.w     $A800
  572.         EndM
  573.     ELSE
  574.         IMPORT_CFM_FUNCTION    SndStartFilePlay
  575.     ENDIF
  576.  
  577. ;
  578. ; pascal OSErr SndPauseFilePlay(SndChannelPtr chan)
  579. ;
  580.     IF ¬ GENERATINGCFM THEN
  581.         Macro
  582.         _SndPauseFilePlay
  583.             dc.w     $203C
  584.             dc.w     $0204
  585.             dc.w     $0008
  586.             dc.w     $A800
  587.         EndM
  588.     ELSE
  589.         IMPORT_CFM_FUNCTION    SndPauseFilePlay
  590.     ENDIF
  591.  
  592. ;
  593. ; pascal OSErr SndStopFilePlay(SndChannelPtr chan, Boolean quietNow)
  594. ;
  595.     IF ¬ GENERATINGCFM THEN
  596.         Macro
  597.         _SndStopFilePlay
  598.             dc.w     $203C
  599.             dc.w     $0308
  600.             dc.w     $0008
  601.             dc.w     $A800
  602.         EndM
  603.     ELSE
  604.         IMPORT_CFM_FUNCTION    SndStopFilePlay
  605.     ENDIF
  606.  
  607. ;
  608. ; pascal OSErr SndChannelStatus(SndChannelPtr chan, short theLength, SCStatusPtr theStatus)
  609. ;
  610.     IF ¬ GENERATINGCFM THEN
  611.         Macro
  612.         _SndChannelStatus
  613.             dc.w     $203C
  614.             dc.w     $0510
  615.             dc.w     $0008
  616.             dc.w     $A800
  617.         EndM
  618.     ELSE
  619.         IMPORT_CFM_FUNCTION    SndChannelStatus
  620.     ENDIF
  621.  
  622. ;
  623. ; pascal OSErr SndManagerStatus(short theLength, SMStatusPtr theStatus)
  624. ;
  625.     IF ¬ GENERATINGCFM THEN
  626.         Macro
  627.         _SndManagerStatus
  628.             dc.w     $203C
  629.             dc.w     $0314
  630.             dc.w     $0008
  631.             dc.w     $A800
  632.         EndM
  633.     ELSE
  634.         IMPORT_CFM_FUNCTION    SndManagerStatus
  635.     ENDIF
  636.  
  637. ;
  638. ; pascal void SndGetSysBeepState(short *sysBeepState)
  639. ;
  640.     IF ¬ GENERATINGCFM THEN
  641.         Macro
  642.         _SndGetSysBeepState
  643.             dc.w     $203C
  644.             dc.w     $0218
  645.             dc.w     $0008
  646.             dc.w     $A800
  647.         EndM
  648.     ELSE
  649.         IMPORT_CFM_FUNCTION    SndGetSysBeepState
  650.     ENDIF
  651.  
  652. ;
  653. ; pascal OSErr SndSetSysBeepState(short sysBeepState)
  654. ;
  655.     IF ¬ GENERATINGCFM THEN
  656.         Macro
  657.         _SndSetSysBeepState
  658.             dc.w     $203C
  659.             dc.w     $011C
  660.             dc.w     $0008
  661.             dc.w     $A800
  662.         EndM
  663.     ELSE
  664.         IMPORT_CFM_FUNCTION    SndSetSysBeepState
  665.     ENDIF
  666.  
  667. ;
  668. ; pascal OSErr SndPlayDoubleBuffer(SndChannelPtr chan, SndDoubleBufferHeaderPtr theParams)
  669. ;
  670.     IF ¬ GENERATINGCFM THEN
  671.         Macro
  672.         _SndPlayDoubleBuffer
  673.             dc.w     $203C
  674.             dc.w     $0420
  675.             dc.w     $0008
  676.             dc.w     $A800
  677.         EndM
  678.     ELSE
  679.         IMPORT_CFM_FUNCTION    SndPlayDoubleBuffer
  680.     ENDIF
  681.  
  682. ; MACE compression routines 
  683. ;
  684. ; pascal NumVersion MACEVersion(void)
  685. ;
  686.     IF ¬ GENERATINGCFM THEN
  687.         Macro
  688.         _MACEVersion
  689.             dc.w     $203C
  690.             dc.w     $0000
  691.             dc.w     $0010
  692.             dc.w     $A800
  693.         EndM
  694.     ELSE
  695.         IMPORT_CFM_FUNCTION    MACEVersion
  696.     ENDIF
  697.  
  698. ;
  699. ; pascal void Comp3to1(const void *inBuffer, void *outBuffer, unsigned long cnt, StateBlockPtr inState, StateBlockPtr outState, unsigned long numChannels, unsigned long whichChannel)
  700. ;
  701.     IF ¬ GENERATINGCFM THEN
  702.         Macro
  703.         _Comp3to1
  704.             dc.w     $203C
  705.             dc.w     $0004
  706.             dc.w     $0010
  707.             dc.w     $A800
  708.         EndM
  709.     ELSE
  710.         IMPORT_CFM_FUNCTION    Comp3to1
  711.     ENDIF
  712.  
  713. ;
  714. ; pascal void Exp1to3(const void *inBuffer, void *outBuffer, unsigned long cnt, StateBlockPtr inState, StateBlockPtr outState, unsigned long numChannels, unsigned long whichChannel)
  715. ;
  716.     IF ¬ GENERATINGCFM THEN
  717.         Macro
  718.         _Exp1to3
  719.             dc.w     $203C
  720.             dc.w     $0008
  721.             dc.w     $0010
  722.             dc.w     $A800
  723.         EndM
  724.     ELSE
  725.         IMPORT_CFM_FUNCTION    Exp1to3
  726.     ENDIF
  727.  
  728. ;
  729. ; pascal void Comp6to1(const void *inBuffer, void *outBuffer, unsigned long cnt, StateBlockPtr inState, StateBlockPtr outState, unsigned long numChannels, unsigned long whichChannel)
  730. ;
  731.     IF ¬ GENERATINGCFM THEN
  732.         Macro
  733.         _Comp6to1
  734.             dc.w     $203C
  735.             dc.w     $000C
  736.             dc.w     $0010
  737.             dc.w     $A800
  738.         EndM
  739.     ELSE
  740.         IMPORT_CFM_FUNCTION    Comp6to1
  741.     ENDIF
  742.  
  743. ;
  744. ; pascal void Exp1to6(const void *inBuffer, void *outBuffer, unsigned long cnt, StateBlockPtr inState, StateBlockPtr outState, unsigned long numChannels, unsigned long whichChannel)
  745. ;
  746.     IF ¬ GENERATINGCFM THEN
  747.         Macro
  748.         _Exp1to6
  749.             dc.w     $203C
  750.             dc.w     $0010
  751.             dc.w     $0010
  752.             dc.w     $A800
  753.         EndM
  754.     ELSE
  755.         IMPORT_CFM_FUNCTION    Exp1to6
  756.     ENDIF
  757.  
  758. ; Sound Manager 3.0 and later calls 
  759. ;
  760. ; pascal OSErr GetSysBeepVolume(long *level)
  761. ;
  762.     IF ¬ GENERATINGCFM THEN
  763.         Macro
  764.         _GetSysBeepVolume
  765.             dc.w     $203C
  766.             dc.w     $0224
  767.             dc.w     $0018
  768.             dc.w     $A800
  769.         EndM
  770.     ELSE
  771.         IMPORT_CFM_FUNCTION    GetSysBeepVolume
  772.     ENDIF
  773.  
  774. ;
  775. ; pascal OSErr SetSysBeepVolume(long level)
  776. ;
  777.     IF ¬ GENERATINGCFM THEN
  778.         Macro
  779.         _SetSysBeepVolume
  780.             dc.w     $203C
  781.             dc.w     $0228
  782.             dc.w     $0018
  783.             dc.w     $A800
  784.         EndM
  785.     ELSE
  786.         IMPORT_CFM_FUNCTION    SetSysBeepVolume
  787.     ENDIF
  788.  
  789. ;
  790. ; pascal OSErr GetDefaultOutputVolume(long *level)
  791. ;
  792.     IF ¬ GENERATINGCFM THEN
  793.         Macro
  794.         _GetDefaultOutputVolume
  795.             dc.w     $203C
  796.             dc.w     $022C
  797.             dc.w     $0018
  798.             dc.w     $A800
  799.         EndM
  800.     ELSE
  801.         IMPORT_CFM_FUNCTION    GetDefaultOutputVolume
  802.     ENDIF
  803.  
  804. ;
  805. ; pascal OSErr SetDefaultOutputVolume(long level)
  806. ;
  807.     IF ¬ GENERATINGCFM THEN
  808.         Macro
  809.         _SetDefaultOutputVolume
  810.             dc.w     $203C
  811.             dc.w     $0230
  812.             dc.w     $0018
  813.             dc.w     $A800
  814.         EndM
  815.     ELSE
  816.         IMPORT_CFM_FUNCTION    SetDefaultOutputVolume
  817.     ENDIF
  818.  
  819. ;
  820. ; pascal OSErr GetSoundHeaderOffset(SndListHandle sndHandle, long *offset)
  821. ;
  822.     IF ¬ GENERATINGCFM THEN
  823.         Macro
  824.         _GetSoundHeaderOffset
  825.             dc.w     $203C
  826.             dc.w     $0404
  827.             dc.w     $0018
  828.             dc.w     $A800
  829.         EndM
  830.     ELSE
  831.         IMPORT_CFM_FUNCTION    GetSoundHeaderOffset
  832.     ENDIF
  833.  
  834. ;
  835. ; pascal UnsignedFixed UnsignedFixedMulDiv(UnsignedFixed value, UnsignedFixed multiplier, UnsignedFixed divisor)
  836. ;
  837.     IF ¬ GENERATINGCFM THEN
  838.         Macro
  839.         _UnsignedFixedMulDiv
  840.             dc.w     $203C
  841.             dc.w     $060C
  842.             dc.w     $0018
  843.             dc.w     $A800
  844.         EndM
  845.     ELSE
  846.         IMPORT_CFM_FUNCTION    UnsignedFixedMulDiv
  847.     ENDIF
  848.  
  849. ;
  850. ; pascal OSErr GetCompressionInfo(short compressionID, OSType format, short numChannels, short sampleSize, CompressionInfoPtr cp)
  851. ;
  852.     IF ¬ GENERATINGCFM THEN
  853.         Macro
  854.         _GetCompressionInfo
  855.             dc.w     $203C
  856.             dc.w     $0710
  857.             dc.w     $0018
  858.             dc.w     $A800
  859.         EndM
  860.     ELSE
  861.         IMPORT_CFM_FUNCTION    GetCompressionInfo
  862.     ENDIF
  863.  
  864. ;
  865. ; pascal OSErr SetSoundPreference(OSType theType, Str255 name, Handle settings)
  866. ;
  867.     IF ¬ GENERATINGCFM THEN
  868.         Macro
  869.         _SetSoundPreference
  870.             dc.w     $203C
  871.             dc.w     $0634
  872.             dc.w     $0018
  873.             dc.w     $A800
  874.         EndM
  875.     ELSE
  876.         IMPORT_CFM_FUNCTION    SetSoundPreference
  877.     ENDIF
  878.  
  879. ;
  880. ; pascal OSErr GetSoundPreference(OSType theType, Str255 name, Handle settings)
  881. ;
  882.     IF ¬ GENERATINGCFM THEN
  883.         Macro
  884.         _GetSoundPreference
  885.             dc.w     $203C
  886.             dc.w     $0638
  887.             dc.w     $0018
  888.             dc.w     $A800
  889.         EndM
  890.     ELSE
  891.         IMPORT_CFM_FUNCTION    GetSoundPreference
  892.     ENDIF
  893.  
  894. ; Sound Manager 3.1 and later calls 
  895. ;
  896. ; pascal OSErr SndGetInfo(SndChannelPtr chan, OSType selector, void *infoPtr)
  897. ;
  898.     IF ¬ GENERATINGCFM THEN
  899.         Macro
  900.         _SndGetInfo
  901.             dc.w     $203C
  902.             dc.w     $063C
  903.             dc.w     $0018
  904.             dc.w     $A800
  905.         EndM
  906.     ELSE
  907.         IMPORT_CFM_FUNCTION    SndGetInfo
  908.     ENDIF
  909.  
  910. ;
  911. ; pascal OSErr SndSetInfo(SndChannelPtr chan, OSType selector, const void *infoPtr)
  912. ;
  913.     IF ¬ GENERATINGCFM THEN
  914.         Macro
  915.         _SndSetInfo
  916.             dc.w     $203C
  917.             dc.w     $0640
  918.             dc.w     $0018
  919.             dc.w     $A800
  920.         EndM
  921.     ELSE
  922.         IMPORT_CFM_FUNCTION    SndSetInfo
  923.     ENDIF
  924.  
  925. ;
  926. ; pascal OSErr GetSoundOutputInfo(Component outputDevice, OSType selector, void *infoPtr)
  927. ;
  928.     IF ¬ GENERATINGCFM THEN
  929.         Macro
  930.         _GetSoundOutputInfo
  931.             dc.w     $203C
  932.             dc.w     $0644
  933.             dc.w     $0018
  934.             dc.w     $A800
  935.         EndM
  936.     ELSE
  937.         IMPORT_CFM_FUNCTION    GetSoundOutputInfo
  938.     ENDIF
  939.  
  940. ;
  941. ; pascal OSErr SetSoundOutputInfo(Component outputDevice, OSType selector, const void *infoPtr)
  942. ;
  943.     IF ¬ GENERATINGCFM THEN
  944.         Macro
  945.         _SetSoundOutputInfo
  946.             dc.w     $203C
  947.             dc.w     $0648
  948.             dc.w     $0018
  949.             dc.w     $A800
  950.         EndM
  951.     ELSE
  952.         IMPORT_CFM_FUNCTION    SetSoundOutputInfo
  953.     ENDIF
  954.  
  955. ; Sound Manager 3.2 and later calls 
  956. ;
  957. ; pascal OSErr GetCompressionName(OSType compressionType, Str255 compressionName)
  958. ;
  959.     IF ¬ GENERATINGCFM THEN
  960.         Macro
  961.         _GetCompressionName
  962.             dc.w     $203C
  963.             dc.w     $044C
  964.             dc.w     $0018
  965.             dc.w     $A800
  966.         EndM
  967.     ELSE
  968.         IMPORT_CFM_FUNCTION    GetCompressionName
  969.     ENDIF
  970.  
  971. ;
  972. ; pascal OSErr SoundConverterOpen(const SoundComponentData *inputFormat, const SoundComponentData *outputFormat, SoundConverter *sc)
  973. ;
  974.     IF ¬ GENERATINGCFM THEN
  975.         Macro
  976.         _SoundConverterOpen
  977.             dc.w     $203C
  978.             dc.w     $0650
  979.             dc.w     $0018
  980.             dc.w     $A800
  981.         EndM
  982.     ELSE
  983.         IMPORT_CFM_FUNCTION    SoundConverterOpen
  984.     ENDIF
  985.  
  986. ;
  987. ; pascal OSErr SoundConverterClose(SoundConverter sc)
  988. ;
  989.     IF ¬ GENERATINGCFM THEN
  990.         Macro
  991.         _SoundConverterClose
  992.             dc.w     $203C
  993.             dc.w     $0254
  994.             dc.w     $0018
  995.             dc.w     $A800
  996.         EndM
  997.     ELSE
  998.         IMPORT_CFM_FUNCTION    SoundConverterClose
  999.     ENDIF
  1000.  
  1001. ;
  1002. ; pascal OSErr SoundConverterGetBufferSizes(SoundConverter sc, unsigned long inputBytesTarget, unsigned long *inputFrames, unsigned long *inputBytes, unsigned long *outputBytes)
  1003. ;
  1004.     IF ¬ GENERATINGCFM THEN
  1005.         Macro
  1006.         _SoundConverterGetBufferSizes
  1007.             dc.w     $203C
  1008.             dc.w     $0A58
  1009.             dc.w     $0018
  1010.             dc.w     $A800
  1011.         EndM
  1012.     ELSE
  1013.         IMPORT_CFM_FUNCTION    SoundConverterGetBufferSizes
  1014.     ENDIF
  1015.  
  1016. ;
  1017. ; pascal OSErr SoundConverterBeginConversion(SoundConverter sc)
  1018. ;
  1019.     IF ¬ GENERATINGCFM THEN
  1020.         Macro
  1021.         _SoundConverterBeginConversion
  1022.             dc.w     $203C
  1023.             dc.w     $025C
  1024.             dc.w     $0018
  1025.             dc.w     $A800
  1026.         EndM
  1027.     ELSE
  1028.         IMPORT_CFM_FUNCTION    SoundConverterBeginConversion
  1029.     ENDIF
  1030.  
  1031. ;
  1032. ; pascal OSErr SoundConverterConvertBuffer(SoundConverter sc, const void *inputPtr, unsigned long inputFrames, void *outputPtr, unsigned long *outputFrames, unsigned long *outputBytes)
  1033. ;
  1034.     IF ¬ GENERATINGCFM THEN
  1035.         Macro
  1036.         _SoundConverterConvertBuffer
  1037.             dc.w     $203C
  1038.             dc.w     $0C60
  1039.             dc.w     $0018
  1040.             dc.w     $A800
  1041.         EndM
  1042.     ELSE
  1043.         IMPORT_CFM_FUNCTION    SoundConverterConvertBuffer
  1044.     ENDIF
  1045.  
  1046. ;
  1047. ; pascal OSErr SoundConverterEndConversion(SoundConverter sc, void *outputPtr, unsigned long *outputFrames, unsigned long *outputBytes)
  1048. ;
  1049.     IF ¬ GENERATINGCFM THEN
  1050.         Macro
  1051.         _SoundConverterEndConversion
  1052.             dc.w     $203C
  1053.             dc.w     $0864
  1054.             dc.w     $0018
  1055.             dc.w     $A800
  1056.         EndM
  1057.     ELSE
  1058.         IMPORT_CFM_FUNCTION    SoundConverterEndConversion
  1059.     ENDIF
  1060.  
  1061.     ENDIF ; __SOUND__
  1062.